minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus: empty set
0: empty set
s: {1}
geq: empty set
true: empty set
false: empty set
div: {1}
if: {1}
↳ CSR
↳ CSRInnermostProof
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus: empty set
0: empty set
s: {1}
geq: empty set
true: empty set
false: empty set
div: {1}
if: {1}
The CSR is orthogonal. By [10] we can switch to innermost.
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus: empty set
0: empty set
s: {1}
geq: empty set
true: empty set
false: empty set
div: {1}
if: {1}
Innermost Strategy.
Using Improved CS-DPs we result in the following initial Q-CSDP problem.
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
MINUS(s(X), s(Y)) → MINUS(X, Y)
GEQ(s(X), s(Y)) → GEQ(X, Y)
DIV(s(X), s(Y)) → IF(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
DIV(s(X), s(Y)) → GEQ(X, Y)
IF(true, X, Y) → X
IF(false, X, Y) → Y
div(minus(X, Y), s(Y))
minus(X, Y)
s on positions {1}
div on positions {1}
IF(true, X, Y) → U(X)
IF(false, X, Y) → U(Y)
U(s(x_0)) → U(x_0)
U(div(x_0, x_1)) → U(x_0)
U(div(minus(X, Y), s(Y))) → DIV(minus(X, Y), s(Y))
U(minus(X, Y)) → MINUS(X, Y)
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus(0, x0)
minus(s(x0), s(x1))
geq(x0, 0)
geq(0, s(x0))
geq(s(x0), s(x1))
div(0, s(x0))
div(s(x0), s(x1))
if(true, x0, x1)
if(false, x0, x1)
( 0, minus(0, Y))
( minus(X, Y), minus(s(X), s(Y)))
( 0, minus(0, Y))
( minus(X, Y), minus(s(X), s(Y)))
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ AND
↳ QCSDP
↳ QCSDPSubtermProof
↳ QCSDP
↳ QCSDP
GEQ(s(X), s(Y)) → GEQ(X, Y)
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus(0, x0)
minus(s(x0), s(x1))
geq(x0, 0)
geq(0, s(x0))
geq(s(x0), s(x1))
div(0, s(x0))
div(s(x0), s(x1))
if(true, x0, x1)
if(false, x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
GEQ(s(X), s(Y)) → GEQ(X, Y)
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ AND
↳ QCSDP
↳ QCSDPSubtermProof
↳ QCSDP
↳ PIsEmptyProof
↳ QCSDP
↳ QCSDP
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus(0, x0)
minus(s(x0), s(x1))
geq(x0, 0)
geq(0, s(x0))
geq(s(x0), s(x1))
div(0, s(x0))
div(s(x0), s(x1))
if(true, x0, x1)
if(false, x0, x1)
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ AND
↳ QCSDP
↳ QCSDP
↳ QCSDPSubtermProof
↳ QCSDP
MINUS(s(X), s(Y)) → MINUS(X, Y)
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus(0, x0)
minus(s(x0), s(x1))
geq(x0, 0)
geq(0, s(x0))
geq(s(x0), s(x1))
div(0, s(x0))
div(s(x0), s(x1))
if(true, x0, x1)
if(false, x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
MINUS(s(X), s(Y)) → MINUS(X, Y)
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ AND
↳ QCSDP
↳ QCSDP
↳ QCSDPSubtermProof
↳ QCSDP
↳ PIsEmptyProof
↳ QCSDP
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus(0, x0)
minus(s(x0), s(x1))
geq(x0, 0)
geq(0, s(x0))
geq(s(x0), s(x1))
div(0, s(x0))
div(s(x0), s(x1))
if(true, x0, x1)
if(false, x0, x1)
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ AND
↳ QCSDP
↳ QCSDP
↳ QCSDP
↳ QCSDPSubtermProof
U(s(x_0)) → U(x_0)
U(div(x_0, x_1)) → U(x_0)
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus(0, x0)
minus(s(x0), s(x1))
geq(x0, 0)
geq(0, s(x0))
geq(s(x0), s(x1))
div(0, s(x0))
div(s(x0), s(x1))
if(true, x0, x1)
if(false, x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
U(s(x_0)) → U(x_0)
U(div(x_0, x_1)) → U(x_0)
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ AND
↳ QCSDP
↳ QCSDP
↳ QCSDP
↳ QCSDPSubtermProof
↳ QCSDP
↳ PIsEmptyProof
minus(0, Y) → 0
minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → true
geq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)
div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
if(true, X, Y) → X
if(false, X, Y) → Y
minus(0, x0)
minus(s(x0), s(x1))
geq(x0, 0)
geq(0, s(x0))
geq(s(x0), s(x1))
div(0, s(x0))
div(s(x0), s(x1))
if(true, x0, x1)
if(false, x0, x1)